package ig.metrica.ejb.conflujos;

import java.util.ArrayList;
import java.util.Collection;
import javax.ejb.*;

/**
 * This is the bean class for the ConfiguracionFlujosSessionBean enterprise bean.
 * Created 20/06/2006 10:26:56 AM
 * @author jsanchez
 */
public class ConfiguracionFlujosSessionBean implements SessionBean, ConfiguracionFlujosSessionRemoteBusiness, ConfiguracionFlujosSessionLocalBusiness {
    private SessionContext context;
    
    // <editor-fold defaultstate="collapsed" desc="EJB infrastructure methods. Click the + sign on the left to edit the code.">
    // TODO Add code to acquire and use other enterprise resources (DataSource, JMS, enterprise bean, Web services)
    // TODO Add business methods or web service operations
    /**
     * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
     */
    public void setSessionContext(SessionContext aContext) {
        context = aContext;
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbActivate()
     */
    public void ejbActivate() {
        
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbPassivate()
     */
    public void ejbPassivate() {
        
    }
    
    /**
     * @see javax.ejb.SessionBean#ejbRemove()
     */
    public void ejbRemove() {
        
    }
    // </editor-fold>
    
    /**
     * See section 7.10.3 of the EJB 2.0 specification
     * See section 7.11.3 of the EJB 2.1 specification
     */
    public void ejbCreate() {
        // TODO implement ejbCreate if necessary, acquire resources
        // This method has access to the JNDI context so resource aquisition
        // spanning all methods can be performed here such as home interfaces
        // and data sources.
    }
    
    
    
    // Add business logic below. (Right-click in editor and choose
    // "EJB Methods > Add Business Method" or "Web Service > Add Operation")
    
    public Collection nuevo(Collection CDTO) throws java.lang.Exception {
        //TODO implement nuevo
        ig.metrica.ejb.conflujos.ConfiguracionflujosLocalHome home=this.lookupConfiguracionflujosBean();
        Integer idModelo=null;
        for (Object elem : CDTO) {
            ConfiguracionflujosDTO DTO=(ConfiguracionflujosDTO) elem;
            idModelo=DTO.getIdmodelo();
            home.create(DTO.getIdmodelo(),DTO.getAltura(),DTO.getDuracion(),DTO.getProcentaje(),DTO.getValormora(),DTO.getSaldocapital());
        }
//        Enumeration enumeration=HDTO.keys();
//
//        while(enumeration.hasMoreElements()){
//            ConfiguracionflujosDTO DTO=(ConfiguracionflujosDTO) enumeration.nextElement();
//            idModelo=DTO.getIdmodelo();
//            home.create(DTO.getIdmodelo(),DTO.getAltura(),DTO.getDuracion(),DTO.getProcentaje(),DTO.getValormora(),DTO.getSaldocapital());
//        }
        return this.findByModelo(idModelo);
    }
    
    public Collection modificar(Collection CDTO,Integer idModelo) throws java.lang.Exception {
            //if(CDTO!=null && CDTO.size()>0){
            ig.metrica.ejb.conflujos.ConfiguracionflujosLocalHome home=this.lookupConfiguracionflujosBean();
//            Integer idModelo=null;
//            ConfiguracionflujosDTO DTO=(ConfiguracionflujosDTO) CDTO.iterator().next();
//            idModelo=DTO.getIdmodelo();
            Collection c=home.findByIdmodelo(idModelo);
            for (Object elem : c) {
                ((ConfiguracionflujosLocal)elem).remove();
            }
            
            for (Object elem : CDTO) {
                home.create(((ConfiguracionflujosDTO)elem).getIdmodelo(),((ConfiguracionflujosDTO)elem).getAltura(),((ConfiguracionflujosDTO)elem).getDuracion(),((ConfiguracionflujosDTO)elem).getProcentaje(),((ConfiguracionflujosDTO)elem).getValormora(),((ConfiguracionflujosDTO)elem).getSaldocapital());
            }
            return this.findByModelo(idModelo);
//        }else
//            throw new Exception("No se ha definido configuraci\u00F3n de flujos");
    }
    
    
    public Collection findByAll() throws java.lang.Exception {
        return  this.lookupConfiguracionflujosBean().findByAll();
    }
    
    public Collection findByModelo(java.lang.Integer idModelo) throws java.lang.Exception {
        //return this.lookupConfiguracionflujosBean().findByIdmodelo(idModelo);
        Collection cc=new ArrayList();
        Collection<ConfiguracionflujosLocal> c=this.lookupConfiguracionflujosBean().findByIdmodelo(idModelo);
        for (ConfiguracionflujosLocal elem : c) {
            //(idmodelo, altura, duracion, procentaje, valormora, saldocapital)
            ConfiguracionflujosDTO DTO= new ConfiguracionflujosDTO
                    (
                    elem.getIdmodelo(),
                    elem.getAltura(),
                    elem.getDuracion(),
                    elem.getProcentaje(),
                    elem.getValormora(),
                    elem.getSaldocapital()
                    );
            cc.add(DTO);
        }
        return cc;
    }
    
    private ig.metrica.ejb.conflujos.ConfiguracionflujosLocalHome lookupConfiguracionflujosBean() {
        try {
            javax.naming.Context c = new javax.naming.InitialContext();
            ig.metrica.ejb.conflujos.ConfiguracionflujosLocalHome rv = (ig.metrica.ejb.conflujos.ConfiguracionflujosLocalHome) c.lookup("java:comp/env/ejb/ConfiguracionflujosBean");
            return rv;
        } catch(javax.naming.NamingException ne) {
            java.util.logging.Logger.getLogger(getClass().getName()).log(java.util.logging.Level.SEVERE,"exception caught" ,ne);
            throw new RuntimeException(ne);
        }
    }
}
